home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / jcool01.zip / TEST_RAN.C < prev    next >
C/C++ Source or Header  |  1992-08-14  |  4KB  |  109 lines

  1. //
  2. // Copyright (C) 1991 Texas Instruments Incorporated.
  3. //
  4. // Permission is granted to any individual or institution to use, copy, modify,
  5. // and distribute this software, provided that this complete copyright and
  6. // permission notice is maintained, intact, in all copies and supporting
  7. // documentation.
  8. //
  9. // Texas Instruments Incorporated provides this software "as is" without
  10. // express or implied warranty.
  11. //
  12.  
  13. #include <cool/Random.h>
  14. #include <misc.h>
  15. #include <test.h>
  16.  
  17. void test_random() {
  18.   double f;
  19.   int i;
  20.   Boolean status;
  21.   CoolRandom r1 (SIMPLE);
  22.   TEST ("CoolRandom r1(SIMPLE)", 1, 1);
  23.   TEST ("r1.next()", (f=r1.next(), (f >= 0.0 && f <= 100.0)), 1);
  24.   status = TRUE;
  25.   for (i = 0; i < 100; i++)
  26.     status &= (r1.next() != r1.next());
  27.   TEST ("for(i=0;i<100;i++) r1.next() != r1.next()", status, TRUE);
  28.   CoolRandom r2 (SHUFFLE);
  29.   TEST ("CoolRandom r2(SHUFFLE)", 1, 1);
  30.   TEST ("r2.next()", (f=r2.next(), (f >= 0.0 && f <= 100.0)), 1);
  31.   status = TRUE;
  32.   for (i = 0; i < 100; i++)
  33.     status &= (r2.next() != r2.next());
  34.   TEST ("for(i=0;i<100;i++) r2.next() != r2.next()", status, TRUE);
  35.   CoolRandom r3 (ONE_CONGRUENTIAL);
  36.   TEST ("CoolRandom r3(ONE_CONGRUENTIAL)", 1, 1);
  37.   TEST ("r3.next()", (f=r3.next(), (f >= 0.0 && f <= 100.0)), 1);
  38.   status = TRUE;
  39.   for (i = 0; i < 100; i++)
  40.     status &= (r3.next() != r3.next());
  41.   TEST ("for(i=0;i<100;i++) r3.next() != r3.next()", status, TRUE);
  42.   CoolRandom r4 (THREE_CONGRUENTIAL);
  43.   TEST ("CoolRandom r4(THREE_CONGRUENTIAL)", 1, 1);
  44.   TEST ("r4.next()", (f=r4.next(), (f >= 0.0 && f <= 100.0)), 1);
  45.   status = TRUE;
  46.   for (i = 0; i < 100; i++)
  47.     status &= (r4.next() != r4.next());
  48.   TEST ("for(i=0;i<100;i++) r4.next() != r4.next()", status, TRUE);
  49.   CoolRandom r5 (SUBTRACTIVE);
  50.   TEST ("CoolRandom r5(SUBTRACTIVE)", 1, 1);
  51.   TEST ("r5.next()", (f=r5.next(), (f >= 0.0 && f <= 100.0)), 1);
  52.   status = TRUE;
  53.   for (i = 0; i < 100; i++) 
  54.     status &= (r5.next() != r5.next());
  55.   TEST ("for(i=0;i<100;i++) r5.next() != r5.next()", status, TRUE);
  56.  
  57.   CoolRandom r6 (SIMPLE, 1, 3.0, 9.0);
  58.   TEST ("CoolRandom r6(SIMPLE,1,3.0,9.0)", 1, 1);
  59.   TEST ("r6.next()", (f=r6.next(), (f >= 3.0 && f <= 9.0)), 1);
  60.   status = TRUE;
  61.   for (i = 0; i < 100; i++)
  62.     status &= (r6.next() != r6.next());
  63.   TEST ("for(i=0;i<100;i++) r6.next() != r6.next()", status, TRUE);
  64.   CoolRandom r7 (SHUFFLE, 1, 3.0, 9.0);
  65.   TEST ("CoolRandom r7(SHUFFLE,1,3.0,9.0)", 1, 1);
  66.   TEST ("r7.next()", (f=r7.next(), (f >= 3.0 && f <= 9.0)), 1);
  67.   status = TRUE;
  68.   for (i = 0; i < 100; i++)
  69.     status &= (r7.next() != r7.next());
  70.   TEST ("for(i=0;i<100;i++) r7.next() != r7.next()", status, TRUE);
  71.   CoolRandom r8 (ONE_CONGRUENTIAL, 1, 3.0, 9.0);
  72.   TEST ("CoolRandom r8(ONE_CONGRUENTIAL,1,3.0,9.0)", 1, 1);
  73.   TEST ("r8.next()", (f=r8.next(), (f >= 3.0 && f <= 9.0)), 1);
  74.   status = TRUE;
  75.   for (i = 0; i < 100; i++)
  76.     status &= (r8.next() != r8.next());
  77.   TEST ("for(i=0;i<100;i++) r8.next() != r8.next()", status, TRUE);
  78.   CoolRandom r9 (THREE_CONGRUENTIAL, 1, 3.0, 9.0);
  79.   TEST ("CoolRandom r9(THREE_CONGRUENTIAL,1,3.0,9.0)", 1, 1);
  80.   TEST ("r9.next()", (f=r9.next(), (f >= 3.0 && f <= 9.0)), 1);
  81.   status = TRUE;
  82.   for (i = 0; i < 100; i++)
  83.     status &= (r9.next() != r9.next());
  84.   TEST ("for(i=0;i<100;i++) r9.next() != r9.next()", status, TRUE);
  85.   CoolRandom r0 (SUBTRACTIVE, 1, 3.0, 9.0);
  86.   TEST ("CoolRandom r0(SUBTRACTIVE,1,3.0,9.0)", 1, 1);
  87.   TEST ("r0.next()", (f=r0.next(), (f >= 3.0 && f <= 9.0)), 1);
  88.   status = TRUE;
  89.   for (i = 0; i < 100; i++)
  90.     status &= (r0.next() != r0.next());
  91.   TEST ("for(i=0;i<100;i++) r0.next() != r0.next()", status, TRUE);
  92. }
  93.  
  94. void test_leak() {
  95.   for (;;) {
  96.     test_random();
  97.   }
  98. }
  99.  
  100. int main () {
  101.   START("CoolRandom");
  102.   test_random();
  103. #if LEAK
  104.   test_leak();
  105. #endif
  106.   SUMMARY();
  107.   return 0;
  108. }
  109.